package com.gt.sensitive;

import com.gt.contant.AjaxCode;
import com.gt.exception.ServiceException;
import com.gt.utils.CommonUtils;

/**
 * @author humingxuan
 * @since 2024-09-26 16:59
 */
public class SensitiveUtils {

    /**
     * 手机号脱敏，显示前三位和后四位，中间脱敏为****
     *
     * @param mobile
     * @return
     */
    public static String maskMobile(String mobile) {
        if (mobile == null || !CommonUtils.isMobile(mobile)){
            throw new ServiceException(AjaxCode.CMD_CODE_ERROR,"不符合手机号格式");
        }
        return CommonUtils.coverPhone(mobile);
    }
    /**
     * 身份证号脱敏，显示前三位和后四位，中间脱敏为****
     *
     * @param idCard
     * @return
     */
    public static String maskIdCard(String idCard) {
        if (idCard == null || !CommonUtils.isIdcard(idCard)){
            throw new ServiceException(AjaxCode.CMD_CODE_ERROR,"不符合身份证号格式");
        }
        return CommonUtils.idCard(idCard);
    }

    /**
     * 根据类型脱敏
     *
     * @param data
     * @param type
     * @return
     */
    public static String maskSensitiveData(String data, SensitiveType type) {
        switch (type) {
            case MOBILE:
                // 可以根据需求添加其他类型脱敏逻辑
                return maskMobile(data);
            case ID_CARD:
                // 可以根据需求添加其他类型脱敏逻辑
                return maskIdCard(data);
            default:
                return data;
        }
    }
}
